1. Field of the Invention
The present invention relates to microcontrollers and, in particular, to an emulator system that is configurable to provide full emulation for a variety of microcontroller architectures.
2. Discussion of the Prior Art
A microcontroller is a flexible data processing device that can be programmed for use in any one of a variety of control applications.
There are three general categories of control operations in which a microcontroller .can be used: device control, data control and process control. In a device control operation, the microcontroller sequences a tool or computer peripheral through a series of operations. In a data control operation, the microcontroller moves data from one or more sources to one or more destinations. In a process control operation, the microcontroller receives inputs from measured process variables and uses the inputs to control the process in a closed-looped system.
A typical microcontroller is a complete microcomputer system which is integrated in a single semiconductor chip. That is, a microcontroller integrated circuit includes a central processing unit (CPU) for processing data, random access memory (RAM) for providing read/write working data storage for the CPU, a timing system for controlling the operations of the microcontroller and an interrupt system for controlling communications between the microcontroller and its associated external peripheral devices. In addition, and relevant to the focus of the present invention, a microcontroller includes a user-programmable read only memory (PROM) that stores the microcode (control code) for the particular control application algorithm to be performed by the microcontroller. The control PROM is permanently programmed with the user's microcode during the fabrication of the microcontroller.
Before the user's microcode is built into the microcontroller, it is desirable to verify the functionality of the code. Typically, an emulator device and a development system are utilized for this purpose. The emulator device provides all of the hardware functionality available in the microcontroller and, in addition, is capable of accessing external program memory. The development system provides the external program memory that stores the user's microcode. The development system also includes test mechanisms for debugging the user's microcode.
The problem has been that each variation in microcontroller architecture requires its own individual emulator. For example, integrated circuit manufacturers may provide a family of microcontroller products, thus offering different versions of a basic microcontroller architecture for different price-to-performance applications. Different members of the microcontroller product family may vary in the size of internal ROM and RAM memories. More expensive devices in the family may have a larger instruction set than less expensive devices. Some members of the family may utilize NMOS technology, while others may utilize low power CMOS technology. There may even be internal architectural differences among the devices, e.g. internal register bit definitions, stack behaviors, etc. Thus, to accommodate these differences, a separate emulator device is required for each individual product in the microcontroller family.
Even with the use of these dedicated emulators, a particular emulation may fall short of 100% emulation if the off-the-shelf emulator utilizes a different set of circuit options, for example, in its inputs and outputs, versus the customer's selection of input/output options.